#ifndef _VECTOR_H__
#define _VECTOR_H__

class mlVector2D
{
public:
	mlVector2D();
	mlVector2D(float _x, float _y);

	float  length();
	void   normalize();

	mlVector2D& operator+(const mlVector2D&) const;
	mlVector2D& operator+=(const mlVector2D&);
	mlVector2D& operator-(const mlVector2D&) const;
	mlVector2D& operator-=(const mlVector2D&);
	mlVector2D& operator*(float) const;
    mlVector2D& operator*=(float);
    mlVector2D& operator/(float) const;
	mlVector2D& operator/=(float);
	float operator*(const mlVector2D&) const;
	
public:
	float x;
	float y;
};

class mlVector3D
{
public:
	mlVector3D();
	mlVector3D(float _x, float _y, float _z);

	float length();
    void  normalize();

	mlVector3D& operator+(const mlVector3D&) const;
	mlVector3D& operator+=(const mlVector3D&);
    mlVector3D& operator-(const mlVector3D&) const;
	mlVector3D& operator-=(const mlVector3D&);
	mlVector3D& operator*(float) const;
    mlVector3D& operator*=(float);
    mlVector3D& operator/(float) const;
	mlVector3D& operator/=(float);
	float operator*(const mlVector3D&) const;
public:
	float x;
	float y;
	float z;
};

#endif